package main

import (
	"fmt"
	"math/rand"
	"strconv"
	"strings"
)

func dereplication(n int) {
	slice_int := make([]int, 0, n)
	map_int := make(map[int]bool, len(slice_int))

	// 往切片里添加100个元素
	for i := 0; i < n; i++ {
		slice_int = append(slice_int, rand.Intn(128))
	}

	// map 去重
	for _, n := range slice_int {
		map_int[n] = true
	}

	fmt.Println(len(map_int))
}

func arr2string(arr []int) string {
	sb := strings.Builder{}
	if arr == nil {
		return "无数据"
	} else {
		for _, v := range arr {
			sb.WriteString(strconv.Itoa(v))
			// 比strconv.Itoa(v)更高效一些
			// sb.WriteString(strconv.FormatInt(int64(v), 10))

			sb.WriteString(" ")
		}

		// 删掉多余的空格
		// str := strings.Trim(sb.String(), " ")
		// 更高效的方法
		s := sb.String()
		str := s[0 : len(s)-1]
		return str
	}
}

func main() {
	dereplication(100)
	// var sl []int
	// s := arr2string(sl)
	// s := arr2string(nil)
	s := arr2string([]int{1, 3, 5, 7, 9, 2, 4, 6, 8, 10})
	fmt.Printf("[%s]\n", s)
}
